import {createSlice} from '@reduxjs/toolkit'
import {setToken, clearToken} from '@/utils/token.ts'
// 整个模块暴露给store仓库 进行配置使用
export const userSlice = createSlice({
    name: 'user',
    // 数据
    initialState: {
        token: null,
        userInfo: {},
        collapsed:false,
        loading:true,
        formAdvancedSearch:false,// 搜索表单是否展开，PageTable监听
    },
    // 方法
    reducers: {
        changeUserInfo(state, {payload}) {
            state.userInfo = payload
        },
        // 页面传递给修改方法的数据  放在了 {type:'xxx',payload:页面传递实参} 中的payload中
        changeUserToken(state, {payload}) {
            if(!payload){
                clearToken()
            }
            setToken(payload)
            state.token = payload
        },
        changeCollapsed(state, {payload}) {
            state.collapsed = payload
        },
        changeLoading(state, {payload}) {
            state.loading = payload
        },
        changFormAdvancedSearch(state, {payload}){
            state.formAdvancedSearch = payload
        }
    },
})
// 将所有的修改方法 暴露给页面 进行使用
export const {changeUserInfo, changeUserToken, changeCollapsed, changeLoading, changFormAdvancedSearch} = userSlice.actions;